<?php
/**
 * @author Vitaly
 * @Date: 24.04.12
 */

/*
 * Контроллер главной страницы
 * показывает сообщения (возможна филтрация по тегу или автору)
 * выдает в свою view массив со всеми необходимыми для отображения данными
 */

class IndexActionController extends ActionController
{
    // выполняется при каждом обращении к контроллеру
    // логинит юзера и добавляет во view его модель (удобно для отрисовки страницы)

    function before()
    {
        if(isSet($_SESSION['userid']))
        {
            $userMapper = new UserMapper();
            $this->view->user = $userMapper->find($_SESSION['userid']);
        }
    }

    function action()
    {
        $msgMapper = new MessageMapper();
        $commentMapper = new CommentMapper();
        $userMapper = new UserMapper();
        $tagMapper = new TagMapper();

        // выбор показываемых сообщений
        // можно отфильтровать по id тега "tag" или id автора "author"

        if(!empty($this->args['author']))
        {
            $allMessages = $msgMapper->getMessagesByAuthor((int)$this->args['author'], 0, 4);
        }
        elseif(!empty($this->args['tag']))
        {
            $allMessages = $msgMapper->getMessagesByTag((int)$this->args['tag']);
        }
        else
        {
            $allMessages = $msgMapper->select(4);
        }

        // заполняем массив $allMessages всеми данными, которые могут потребоваться для вывода во view

        foreach($allMessages as &$message)
        {
            $message['author'] = $userMapper->findArray($message['author']);
            $message['comments'] = $commentMapper->getCommentsArray($message['id']);
            $message['tags'] = $tagMapper->getTagsArray($message['id']);
        }

        // настраиваем view

        $this->view->setTitle('LittleBlog');
        $this->view->setStructure('index');
        $this->view->posts = $allMessages;
        $this->view->draw();
    }
}
